<?php
	/**
     * Incluyendo el archivo donde se encuentra la clase xajax
     */
	 require_once $_SERVER['DOCUMENT_ROOT'] . '/spa/xajax/xajax_core/xajax.inc.php';

    /**
     * Instanciando un objeto de la clase xajax
     */
	 $xajax = new xajax();

    /**
     * Escribiendo una función que será llamada por medio de ajax
     */
	 function buscar_combo($idCombo) {
		 $conexion = OCILogon ('spa','1234') or die( "¡No se pudo conectar a la base de Datos!") or die (OCIError());
	
    	 $query = "SELECT *
		 		   FROM COMBO 
				   WHERE PK_ID_COMBO = $idCombo";
				   
		 $sentencia = OCIParse($conexion, $query);
	
		 OCIExecute($sentencia);		 
		
		 $rows = OCIFetchstatement($sentencia, $resultado);
		
		 if ($rows > 0) {
		 	 $nombreCombo = $resultado['NOMBRE'][0];
		 	 $tasaDescuento = $resultado['TASA_DESCUENTO'][0];
		 }
		 
		 $nombreCombo = "<input name='nombre' type='text' id='nombre' value='$nombreCombo' size='40' maxlength='20' onblur='xajax_validarNombre(document.combo.nombre.value)'/>";
		 $tasaDescuento = "<input name='tasaDescuento' type='text' id='tasaDescuento' value='$tasaDescuento' size='40' maxlength='2' onblur='xajax_validarTasa(document.combo.tasaDescuento.value)'/>";
		 
		 $query = "SELECT p.PK_ID_PRODUCTO, p.NOMBRE, pc.CANTIDAD
		 		   FROM COMBO c, PRO_COM pc, PRODUCTO p
				   WHERE c.PK_ID_COMBO = $idCombo
				   AND c.PK_ID_COMBO = pc.PK_FK_ID_COMBO
				   AND pc.PK_FK_ID_PRODUCTO = p.PK_ID_PRODUCTO";
				   
		 $sentencia = OCIParse($conexion, $query);
	
		 OCIExecute($sentencia);
		 
		 $rows = OCIFetchstatement($sentencia, $resultado);
		 
		 $areaTexto = '';
		 $idProductos = '(';
		 if ($rows > 0) {
			 for ($i = 0; $i < $rows; $i++) {
				 if ($i < $rows-1)
				 	$idProductos .= $resultado['PK_ID_PRODUCTO'][$i] . ', ';
					
				 $nombre = $resultado['NOMBRE'][$i];
				 $cantidad = $resultado['CANTIDAD'][$i];
				 
				 if ($cantidad == 1)
				 	$cantidad .= " unidad;\n";
				 
				 else 
				 	$cantidad .= " unidades;\n";
					
				 $areaTexto .= '&raquo; ' . $nombre . ' - ' . $cantidad;
			 }
			 
			 $idProductos .= $resultado['PK_ID_PRODUCTO'][$rows-1] . ')';
		 }
		 
		 $query = "SELECT PK_ID_PRODUCTO, NOMBRE
				   FROM PRODUCTO
				   WHERE PK_ID_PRODUCTO NOT IN $idProductos
				   ORDER BY PK_ID_PRODUCTO DESC";
				   
		 $sentencia = OCIParse($conexion, $query);
		
		 OCIExecute($sentencia);
		
		 $selectProductos = "<select name='idProducto' id='idProducto'><option value='Seleccione'>Seleccione</option>";
		 $rows = OCIFetchstatement($sentencia, $resultado);
		
		 if ($rows > 0)
		 	for ($i = 0; $i < $rows; $i++)
				$selectProductos .= '<option value="' . $resultado['NOMBRE'][$i] . '">' . $resultado['NOMBRE'][$i] . '</option>';
				
		 $selectProductos .= '</select>';
				
		 $selectCantidad = "<select name='cantidad' id='cantidad'><option value='Seleccione'>Seleccione</option>";
		 
		 for ($i = 1; $i < 100; $i++)
		 	$selectCantidad .= '<option value=' . $i . '>' . $i . '</option>';
		 
		 $selectCantidad .= '</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="agregar" type="button" value="Agregar al combo" onclick="llenar_area_texto(document.combo.idProducto.options[document.combo.idProducto.selectedIndex].value, document.combo.cantidad.options[document.combo.cantidad.selectedIndex].value)" />';			
		 
		 OCILogOff($conexion);
		 
		 /**
         * Instanciando un objeto de la clase que genera la respuesta con ajax
         */
         $respuesta = new xajaxResponse();

        /**
         * Escribiendo en las capas (div) con id = nombre, tipo, costo, descripcion
		 * En cada capa se crea el campo de texto con el valor defecto traído de la base de datos
         */
         $productos = '<textarea name="productos" rows="4" cols="52" readonly="readonly">' . $areaTexto . '</textarea>';
		 
		/**
		 * Para escribir en las capas se utiliza el método assign del objeto respuesta de la clase xajaxResponse creado
		 * Recibe como parámetros el nombre de la capa (div), "innerHTML" (siempre es así) y lo que se va a escribir en dicha capa
		 */
         $respuesta -> assign("nombre", "innerHTML", $nombreCombo);
		 $respuesta -> assign("tasaDescuento", "innerHTML", $tasaDescuento);
		 $respuesta -> assign("selectProducto", "innerHTML", $selectProductos);
		 $respuesta -> assign("selectCantidad", "innerHTML", $selectCantidad);
		 $respuesta -> assign("productos", "innerHTML", $productos);
		 $respuesta -> assign("errorCombo", "innerHTML", '');
		 $respuesta -> assign("errorC", "innerHTML", '<input name="errorCombo" type="hidden" value="false"');
		 $respuesta -> assign("errorTasa", "innerHTML", '');
		 $respuesta -> assign("errorT", "innerHTML", '<input name="errorTasa" type="hidden" value="false"');
		 $respuesta -> assign("mensaje", "innerHTML", "");

        /**
         * Devolviendo el objeto que genera la respuesta con ajax
         */
         return $respuesta;
     }
	 
	 /**
      * Asociando la función creada al objeto xajax
      */
      $xajax -> registerFunction("buscar_combo");
	 
	 /**
     * Escribiendo una función que será llamada por medio de ajax
     */
	 function modificar_combo($combo) {
		 $idCombo = $combo['idCombo'];
		 $nombre = $combo['nombre'];
		 $tasaDescuento = $combo['tasaDescuento'];
		 $productos = $combo['productos'];
		 
		 $conexion = OCILogon ('spa','1234') or die( "¡No se pudo conectar a la base de Datos!") or die (OCIError());
	
    	 $query = "UPDATE COMBO SET
		  		  	 NOMBRE = INITCAP('$nombre'),
				  	 TASA_DESCUENTO = $tasaDescuento
				   WHERE PK_ID_COMBO = $idCombo";
				  
		 $sentencia = OCIParse($conexion, $query);
	
		 $c = OCIExecute($sentencia);
		
		 OCICommit($conexion);
		 
		 $query = "DELETE FROM PRO_COM
		  		   WHERE PK_FK_ID_COMBO = $idCombo";
				  
		 $sentencia = OCIParse($conexion, $query);
	
		 $c = OCIExecute($sentencia);
		
		 OCICommit($conexion);
		
	    /**
		 * Separando el contenido del área de texto por el punto y coma final de cada entrada
		 */
		$explode = explode(";", $productos);
		
		for ($i = 0; $i < count($explode)-1; $i++) {
		   /**
			* Separando el contenido de cada entrada por el guion
			*/
			$explodeProducto = explode(" - ", $explode[$i]);
		   
		   /**
		    * Obteniendo la cadena completa antes y después del "-" en cada registro
			*/
			$nombreAux = $explodeProducto[0];
			$cantidadAux = $explodeProducto[1];
			
		   /**
		    * Tomando el nombre del producto y la cantidad
			*/
			if ($i == 0)
				$nombreProducto = substr($nombreAux, 3);
			
			else
				$nombreProducto = substr($nombreAux, 4);
			
			$cantidadProducto = substr($cantidadAux, 0, strpos($cantidadAux, "u")-1);		
			
			$query = "SELECT PK_ID_PRODUCTO
			          FROM PRODUCTO
					  WHERE NOMBRE = '$nombreProducto'";
				   
			$sentencia = OCIParse($conexion, $query);
	
			OCIExecute($sentencia);
			
			$rows = OCIFetchstatement($sentencia, $resultado);
			
			if ($rows > 0)
				$idProducto = $resultado['PK_ID_PRODUCTO'][0];				
			
			/**
		    * Modificando la tabla pro_com
			*/
			$query = "INSERT INTO PRO_COM VALUES ($idProducto, $idCombo, $cantidadProducto)";
					  
			$sentencia = OCIParse($conexion, $query);
			
			$c = OCIExecute($sentencia);
			
			OCICommit($conexion);
		}
		
		OCILogOff($conexion);
		
		$nombre = '<font color="#FFFFFF">' . $nombre . '</font>';
		$tasaDescuento = '<font color="#FFFFFF">' . $tasaDescuento . '</font>';
		
		/**
		 * Muestra el mensaje de éxito o error después de la actualización
		 */
		if ($c) {
			$mensaje = '<font size="+1" color="#FFFFFF">¡MODIFICACIÓN EXITOSA!</font>';
		}
		else {
		    $mensaje = '<font size="+1" color="#990000">¡MODIFICACIÓN FALLIDA!</font>';	
		}
		
		/**
         * Instanciando un objeto de la clase que genera la respuesta con ajax
         */
        $respuesta = new xajaxResponse();

        /**
         * Escribiendo en las capas (div) con id = nombre, tipo, costo, descripcion
		 * En cada capa se crea el campo de texto con el valor defecto traído de la base de datos
         */
		$respuesta -> assign("nombre", "innerHTML", $nombre);
		$respuesta -> assign("tasaDescuento", "innerHTML", $tasaDescuento);
		$respuesta -> assign("selectProducto", "innerHTML", "");
		$respuesta -> assign("selectCantidad", "innerHTML", "");
		$respuesta -> assign("mensaje", "innerHTML", $mensaje);
		 
		/**
         * Devolviendo el objeto que genera la respuesta con ajax
         */
        return $respuesta;
	}
	
	/**
     * Asociando la función creada al objeto xajax
     */
	$xajax -> registerFunction("modificar_combo");
	
	function validarNombre($nombre, $idCombo) {
		$respuesta = new xajaxResponse();
		 
		if ($nombre == '') {
			$respuesta -> assign("errorCombo", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorC", "innerHTML", '<input name="errorCombo" type="hidden" value="true" />');
		}
		 
		else {
			$conexion = OCILogon('spa', '1234') or die("¡No se pudo conectar a la base de datos!") or die(OCIError());
			
			$query = "SELECT PK_ID_COMBO
			          FROM COMBO
					  WHERE NOMBRE = INITCAP('$nombre')";
					  
			$sentencia = OCIParse($conexion, $query);
			
			OCIExecute($sentencia);
			
			OCILogOff($conexion);
			
			$rows = OCIFetchstatement($sentencia, $resultado);
			
			if (($rows > 0) && ($resultado['PK_ID_COMBO'][0] != $idCombo)) {
				$respuesta -> assign("errorCombo", "innerHTML", '<font color="#990000" size="-1">* Nombre duplicado</font>');
				$respuesta -> assign("errorC", "innerHTML", '<input name="errorCombo" type="hidden" value="true" />');
			}
				
			else {
				$respuesta -> assign("errorCombo", "innerHTML", '');
				$respuesta -> assign("errorC", "innerHTML", '<input name="errorCombo" type="hidden" value="false" />');
			}
		}
		 
		return $respuesta;
	}
	 
	$xajax -> registerFunction("validarNombre");
	
	function validarTasa($tasa) {
		$respuesta = new xajaxResponse();
		
		if ($tasa == '') {
			$respuesta -> assign("errorTasa", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorT", "innerHTML", '<input name="errorTasa" type="hidden" value="true" />');
		}
		
		else if (!is_numeric($tasa)) {
			$respuesta -> assign("errorTasa", "innerHTML", '<font color="#990000" size="-1">* Tasa debe ser numérica</font>');
			$respuesta -> assign("errorT", "innerHTML", '<input name="errorTasa" type="hidden" value="true" />');
		}
			
		else if (($tasa < 0.01) || ($tasa > 99.99)) {
			$respuesta -> assign("errorTasa", "innerHTML", '<font color="#990000" size="-1">* Tasa entre 0.01 y 99.99</font>');
			$respuesta -> assign("errorT", "innerHTML", '<input name="errorTasa" type="hidden" value="true" />');
		}
		
		else {
			$respuesta -> assign("errorTasa", "innerHTML", '');
			$respuesta -> assign("errorT", "innerHTML", '<input name="errorTasa" type="hidden" value="false" />');
		}	

		return $respuesta;
	}
	
	$xajax -> registerFunction("validarTasa");
	
	function vaciar_area_texto() {
		$conexion = OCILogon ('spa','1234') or die( "¡No se pudo conectar a la base de Datos!") or die (OCIError());
		
		$query = "SELECT PK_ID_PRODUCTO, NOMBRE
				  FROM PRODUCTO
				  ORDER BY PK_ID_PRODUCTO DESC";
				   
		$sentencia = OCIParse($conexion, $query);
		
		OCIExecute($sentencia);
		
		$selectProductos = "<select name='idProducto' id='idProducto'><option value='Seleccione'>Seleccione</option>";
		$rows = OCIFetchstatement($sentencia, $resultado);
		
		if ($rows > 0)
			for ($i = 0; $i < $rows; $i++)
				$selectProductos .= '<option value="' . $resultado['NOMBRE'][$i] . '">' . $resultado['NOMBRE'][$i] . '</option>';
				
		$selectProductos .= '</select>';
		
		$areaProductos = '<textarea name="productos" rows="4" cols="52" readonly="readonly"></textarea>';
		
		$respuesta = new xajaxResponse();
		
		$respuesta -> assign("selectProducto", "innerHTML", $selectProductos);
		$respuesta -> assign("productos", "innerHTML", $areaProductos);
		
		return $respuesta;		
	}
	
	$xajax -> registerFunction("vaciar_area_texto");

   /**
    * Ejecutando el método del objeto xajax que permite procesar las
    * peticiones que puedan llegar desde la página
    */
    $xajax -> processRequest();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name       : Beach Sunset
Description: A two-column, fixed-width design for 1024x768 screen resolutions.
Version    : 1.0
Released   : 20090416

-->
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Modificar combo</title>
		<?php
			/**
     	 	 * Indicando al objeto xajax que se encargue de generar el código
     	 	 * javascript necesario para procesar las llamadas a ajax
     	 	 */
     		 $xajax -> printJavascript("xajax/");
		?>
        <script>
			function llenar_area_texto(producto, cantidad) {
				if ((producto != 'Seleccione') && (cantidad != 'Seleccione')) {
					document.combo.productos.value += "» " + producto + " - " + cantidad;
					
					if (cantidad == 1)
						document.combo.productos.value += " unidad;\n";
					else
						document.combo.productos.value += " unidades;\n";
					
					document.combo.idProducto.options[document.combo.idProducto.selectedIndex] = null;
				}
			}
			
			function modificarCombo() {
				errorCombo = document.combo.errorCombo.value;
				errorTasa = document.combo.errorTasa.value;
				
				if ((errorCombo == 'false') && (errorTasa == 'false'))
					xajax_modificar_combo(xajax.getFormValues('combo'));
					
				else
					alert("¡El combo presenta inconvenientes, revise e intente de nuevo!");
			}
		</script>
		<meta name="keywords" content="" />
		<meta name="description" content="" />
		<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
		<style type="text/css">
			<!--
				.Estilo2 {font-size: 12px; color: #FF6600; }
				.Estilo3 {font-size: 12px; color: #FF9900; }
				.Estilo4 {color: #FF6600}
				.Estilo5 {font-size: 24px}
				.Estilo7 {color: #FFFFFF}
				.Estilo8 {font-size: 12px; color: #FFFFFF; }
				.Estilo9 {font-size: 60px}
				.Estilo10 {color: #F0F0F0}
			-->
		</style>
	</head>
	<body>
		<div id="wrapper">
        	<div id="header">	
 <br />
		<div id="menu">				      
				<li  class="active"><a href="HOME.php" title="HOME">HOME</a></li>
				<li><a href="INSERTAR.php" title="INSERTAR">INSERTAR</a></li>
				<li><a href="ELIMINAR.php" title="ELIMINAR">ELIMINAR</a></li>
				<li><a href="CONSULTAR.php" title="CONSULTAR">CONSULTAR</a></li>
				<li><a href="MODIFICAR.php" title="MODIFICAR">MODIFICAR</a></li>				
	  	</div>  <!-- end #menu -->	
						
		<div id="search">
			<div id="menu">						
					<li><a href="MOSTRAR.php" title="MOSTRAR">MOSTRAR</a></li>
			</div> <!-- end #menu -->	
		</div>		<!-- end #search -->	
  </div>    <!-- end #header -->

			<div id="logo">
				<h1><a href="#"><span class="">Take a Rest</span> ... </a></h1>
		    	<div align="left"></div>
			</div>
			<!-- end #logo -->  
	
		</div> <!-- end *header- wrapper -->

		<div id="page">
        
        	<div id="sidebar">
		<ul>
			<li>
				<h2>Acciones</h2>
				<p class="Estilo2">Pulse sobre una acción para ejecutarla</p>
			</li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="InsertarCombo.php" class="Estilo10">Agregar un nuevo combo</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="ModificarCombo.php" class="Estilo10">Modificar un combo existente</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="EliminarCombo.php" class="Estilo10">Eliminar un combo</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="MostrarCombo.php" class="Estilo10">Mostrar todos los combos</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="ConsultarCombo.php" class="Estilo10">Consultar combos registrados</a></font>
            </li>
		</ul>
</div>
        
  			<h1 align="center"><font color="#FFFFFF">Modificar combo</font></h1>
  			<p>&nbsp;</p>
  
  			<div align="center">
  				<form id="combo" name="combo">
  					<table width="509" border="0" cellpadding="5" cellspacing="5">
  						<tr>
    						<td width="246" align="right"><font color="#FFFFFF" size="+1">Combo</font></td>
    						<td width="247" align="left"><select name="idCombo" onChange="xajax_buscar_combo(document.combo.idCombo.options[document.combo.idCombo.selectedIndex].value)">
    							 	<option value="0">Seleccione</option>
                                    
<!-- xajax_buscar_producto(document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value) 
	 Función JavaScript para enviar el elemento del combo box seleccionado por el usuario a la función buscar_producto.
     El parámetro que recibe es el identificador del elemento denntro de la lista desplegable, es decir, el identificador del
     producto a través del cual se buscará en la base de datos para mostrar sus detalles en los campos de texto -->
                                   
                
					<?php
						$conexion = OCILogon('spa', '1234') or die ('¡No se pudo conectar a la base de datos!') or die (OCIError());
		
						$query = "SELECT PK_ID_COMBO, NOMBRE
				  				  FROM COMBO
				  				  ORDER BY PK_ID_COMBO DESC";
				  
						$sentencia = OCIParse($conexion, $query);
		
						OCIExecute($sentencia);
		
						$impresion = '';
						$rows = OCIFetchstatement($sentencia, $resultado);
		
						/**
						 * Llenado inicial del combo box
						 */
						if ($rows > 0)
							for ($i = 0; $i < $rows; $i++)
								$impresion .= '<option value=' . $resultado['PK_ID_COMBO'][$i] . '>' . $resultado['NOMBRE'][$i] . '</option>';
		
						echo $impresion;
					?>
            				</select></td>
  						</tr>
                        <tr>
                        	<td></td><td></td>
                        </tr>
  						<tr>
    						<td width="246" align="right"><font color="#FFFFFF" size="+1">Nombre</font></td>
    						<td width="247" align="left"><div id="nombre"><input name="nombre" type="text" id="nombre" size="40" maxlength="20" onblur="xajax_validarNombre(document.combo.nombre.value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorCombo"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorC"><input name="errorCombo" type="hidden" value="true" /></div></td>
  						</tr>
  						<tr>
    						<td align="right"><font color="#FFFFFF" size="+1">Tasa de descuento</font></td>
    						<td align="left"><div id="tasaDescuento"><input name="tasaDescuento" type="text" id="tasaDescuento" size="40" maxlength="2" onblur="xajax_validarTasa(document.combo.tasaDescuento.value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorTasa"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorT"><input name="errorTasa" type="hidden" value="true" /></div></td>
  						</tr>
                        <tr>
    						<td width="226" align="right"><div id="etiquetaProducto"><font color="#FFFFFF" size="+1">Producto</font></div></td>
    						<td width="275" align="left"><div id="selectProducto"></div></td>
  						</tr>
  						<tr>
  							<td width="226" align="right"><div id="etiquetaCantidad"><font color="#FFFFFF" size="+1">Cantidad</font></div></td>
    						<td width="275" align="left"><div id="selectCantidad"></div></td>
  						</tr>
  						<tr>
  							<td align="center" colspan="2">
	    						<fieldset>
        							<legend><font color="#FFFFFF" size="+1">Productos del combo</font></legend>
        							<div id="productos"><textarea name="productos" rows="4" cols="52" readonly="readonly"></textarea></div>
        						</fieldset>
    						</td>    
  						</tr>
  						<tr>
                        	<td align="right"><input name="borrar" type="button" value="Eliminar productos del combo" onclick="xajax_vaciar_area_texto()" /></td>
  							<td align="left"><input name="modificar" type="button" value="Modificar" onclick="modificarCombo()" /></td>
    					</tr>
  						<tr>
  							<td align="center" colspan="2"><div id="mensaje"></div></td>
  						</tr>
				</table>
			</form>
		</div>
		<!-- end #page -->

		<div id="footer">
			<p> Design by <a href="http://www.freecsstemplates.org/">Nubielis, Eduardo, Daniel </a></p>
		</div>
		<!-- end #footer -->
		</div>
	</body>
</html>
